package exam.huawei.string;

import org.junit.Test;

import java.util.Scanner;

/**
 * 敏感字段加密
 * <p>
 * 给定一个由多个命令字组成的命令字符串:
 * 1、字符串长度小于等于127字节，只包含大小写字母，数字，下划线和偶数个双引号:2、命令字之间以一个或多个下划线 进行分割;
 * 3、可以通过两个双引号”来标识包含下划线 的命令字或空命令字 (仅包含两个双引号的命令字)双引号不会在命令字内部出现:
 * 请对指定索引的敏感字段进行加密，替换为****** (6个*) ，并删除命令字前后多余的下划线
 * 如果无法找到指定索引的命令字，输出字符串 ERROR。
 * <p>
 * password_a1245678_timeout_100_
 * aaa_password_"a12_45678"_timeout_100_""_
 * ggg_""_aaa_password_"a12_45678"_timeout_100_""_
 */
public class Example12_2 {

    @Test
    public void test() {
        String str = "aaa_password_\"a12_45678\"_timeout_100_\"\"_";
        String[] split = str.split("\"");
        for (String s : split) {
            System.out.println(s);
            int i = s.indexOf("_");
            System.out.println(i);
        }
    }

    /**
     * 通过观察字符串中_的规律也可以得到答案
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int index = Integer.parseInt(sc.nextLine());
        String content = sc.nextLine();

        System.out.println(getResult(index, content));
    }

    public static String getResult(int index, String content) {

        String[] split = content.split("\"");

        String password;
        // 密码含_，被""包起来的情况
        if (split.length > 1) {
            for (int i = 1; i < split.length; i++) {
                if (split[i].indexOf("_") > 0) {
                    password = "\"" + split[i] + "\"";
                    return content.replace(password, "******");
                }
            }

        }

        // 密码中不含_的情况
        if (split.length == 1) {
            String[] split2 = content.split("_");
            password = split2[index];
            return content.replace(password, "******");

        }

        return "ERROR";
    }
}